unit UnitObrasSociales;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids,
  Menus, sqldb, db, UnitMainForm;

type

  { TFormObrasSociales }

  TFormObrasSociales = class(TForm)
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    SQLQuery1: TSQLQuery;
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormShow();
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure ordenar_grid();
  private
    { private declarations }
  public
    nombre : string;
  end; 

var
  FormObrasSociales: TFormObrasSociales;

implementation

{$R *.lfm}

{ TFormObrasSociales }

procedure TFormObrasSociales.ordenar_grid();
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from obra_social where obs_nombre like ''%' + nombre + '%'' order by obs_nombre';

  SQLQuery1.Open;

  DBGrid1.Columns[0].Title.Caption := 'Código';
  DBGrid1.Columns[1].Title.Caption := 'Nombre';

  DBGrid1.Columns[0].Width := 110;
  DBGrid1.Columns[1].Width := 300;
end;

procedure TFormObrasSociales.FormShow();
begin
  nombre := '%';
  ordenar_grid();
end;

procedure TFormObrasSociales.MenuItem4Click(Sender: TObject);
var
  nueva_obs : string;

begin
  nueva_obs := InputBox('Nueva Obra Social', 'Ingrese el nombre de la nueva Obra Social', '');

  if nueva_obs <> '' then
  begin
    nueva_obs := uppercase(nueva_obs);

    if SQLQuery1.Active = true then
      SQLQuery1.Close;

    SQLQuery1.SQL.Text := 'insert into obra_social(obs_nombre) values(''' + nueva_obs + ''')';

    SQLQuery1.ExecSQL;

    SQLQuery1.SQL.Text := 'select * from obra_social';

    SQLQuery1.Open;

    SQLQuery1.ApplyUpdates;
    MainForm.SQLTransaction1.Commit;
    MainForm.ordenar_grid();

    ShowMessage('Alta Exitosa');

    ordenar_grid();
  end;
end;

procedure TFormObrasSociales.MenuItem5Click(Sender: TObject);
begin
  ShowMessage('Click en la obra social a modificar');
end;

procedure TFormObrasSociales.MenuItem6Click(Sender: TObject);
var
  elim_codigo : string;
begin
  elim_codigo := InputBox('Eliminar Obra Social', 'Ingrese el código de Obra Social a eliminar', '');

  if elim_codigo <> '' then
  begin
    if SQLQuery1.Active = true then
      SQLQuery1.Close;

    SQLQuery1.SQL.Text := 'delete from obra_social where obs_cdg = ' + elim_codigo;

    SQLQuery1.ExecSQL;

    SQLQuery1.SQL.Text := 'select * from obra_social';

    SQLQuery1.Open;

    SQLQuery1.ApplyUpdates;
    MainForm.SQLTransaction1.Commit;
    MainForm.ordenar_grid();

    ShowMessage('Baja Exitosa');

    ordenar_grid();
  end;
end;

procedure TFormObrasSociales.FormClose(Sender: TObject;
  var CloseAction: TCloseAction);
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;
end;

procedure TFormObrasSociales.DBGrid1CellClick(Column: TColumn);
var
  mod_codigo : string;
  mod_nombre : string;

begin
  mod_codigo := SQLQuery1.FieldByName('obs_cdg').AsString;

  mod_nombre := InputBox('Modificar Obra Social', 'Ingrese el Nombre Corregido:',
    SQLQuery1.FieldByName('obs_nombre').AsString);

  if mod_nombre <> '' then
  begin
    mod_nombre := uppercase(mod_nombre);

    if SQLQuery1.Active = true then
      SQLQuery1.Close;

    SQLQuery1.SQL.Text := 'update obra_social set obs_nombre = ''' + mod_nombre
      + ''' where obs_cdg = ' + mod_codigo;

    SQLQuery1.ExecSQL;

    SQLQuery1.SQL.Text := 'select * from obra_social';

    SQLQuery1.Open;

    SQLQuery1.ApplyUpdates;
    MainForm.SQLTransaction1.Commit;
    MainForm.ordenar_grid();

    ShowMessage('Modificación Exitosa');

    ordenar_grid();
  end;
end;

end.

